"""
    这个文件包含各种回调类型，建议单独构建一个函数进行数据逻辑处理
    这样有助于代码可读，在维护时不会误删代码
"""
import WxCustomData
from WxFunc import api


def get_injection_msg(msg: dict) -> bool:  # 注入成功消息事件
    """
    注入成功回调事件
    :param msg: 接收到客户端发送的json数据
    :return: 回调是否处理
    """
    print(f'注入成功，端口号为：{msg["data"]["port"]}')
    return True


def get_login_success_msg(msg: dict) -> bool:  # 登录成功回调事件
    """
    登陆成功回调事件
    :param msg: 接收到客户端发送的json数据
    :return: 回调是否处理
    """
    login_msg = WxCustomData.login_data(msg)  # 解析客户端回调的数据
    print(f"登录成功，微信号：{login_msg.wxNum}")
    print(api.set_down_img_time(wxport=login_msg.wxport, time='23:30-23:30'))  # 设置图片下载时间，不然可能会出现图片解密失败
    return True


def get_msg(msg: dict) -> bool:  # 收到消息回调事件
    """
    收到消息回调事件，收到群聊消息、私聊消息（好友、公众号等），将会通知此事件，登录账号在手机上发送的消息区分为了事件消息
    :param msg: 接收到客户端发送的json数据
    :return: 回调是否处理
    """
    if msg['data']['msgSource'] == 1:  # 本人在手机发送的消息
        if msg['data']['fromType'] == 1:  # 发送好友消息
            friend_msg = WxCustomData.friend_msg_data(msg)  # 相当于易语言的自定义数据类型
            print(f"发送好友消息：{friend_msg.msg}")

        elif msg['data']['fromType'] == 2:  # 发送群聊消息
            group_msg = WxCustomData.group_msg_data(msg)  # 相当于易语言的自定义数据类型
            print(f"发送群消息：{group_msg.msg}")

        elif msg['data']['fromType'] == 3:  # 发送公众号消息
            pass

    else:  # 他人发送的消息
        if msg['data']['fromType'] == 1:  # 收到好友消息
            friend_msg = WxCustomData.friend_msg_data(msg)  # 相当于易语言的自定义数据类型
            print(f"收到好友消息：{friend_msg.msg}，端口号{friend_msg.wxport}")

        elif msg['data']['fromType'] == 2:  # 收到群聊消息
            group_msg = WxCustomData.group_msg_data(msg)  # 相当于易语言的自定义数据类型
            print(f"收到群消息：{group_msg.msg}，端口号{group_msg.wxport}")

        elif msg['data']['fromType'] == 3:  # 收到公众号消息
            pass

    return True
